/*
  支付宝<3月摇一摇>

  已知问题：

  Q：使用脚本后容易出现活动火爆提醒
  A：暂时增加随机等待时间，观察是否缓解

  待更新功能：
  无

  202203 V1.0
  新增脚本
*/

auto.waitFor();//无障碍服务检测
console.show();//开启悬浮窗
setScreenMetrics(1440, 3120);//声明是基于分辨率1440，3120的点击
console.info("支付宝<3月摇一摇>任务");
sleep(1000);
console.log("即将启动<支付宝>");
app.launchApp("支付宝");//打开支付宝 //如果在分身应用中无法跳转，可屏蔽此行
var RewardTimes=0//金币奖励次数
var NullRewardTimes=0//无奖励摇红包次数
var ShakeHongBaoTimes=0//摇红包次数
var GoldCoinQty=0//本次金币数量
var Status=1//运行状态（0：等待奖励中，不可摇红包；1：可摇红包）
while (text("摇红包").findOne(1000) == null) {
  console.info("未找到活动界面，请手动进入");
  sleep(2000);
}
if (text("摇红包").exists() |text("摇一摇").exists()) {
  console.info("成功进入活动界面");
  console.log("等待加载弹窗……");
  for(var i = 0; i < 3; i++){//等待3秒，如有弹窗，提前进入下一步
    if(text("关闭").exists()){
      console.log("处理弹窗");
      break;
    }
    sleep(random(1000,2000));
  }
  while(text("关闭").exists()){
    console.log("处理弹窗");
    if (text("关闭").exists()) {
      text("关闭").findOne().click();
      console.log("关闭");
      sleep(random(1000,2000));
    }
  }
  console.log("弹窗处理完毕");
  sleep(random(1000,2000));
}
for(;;){
  if((text("领").exists() |text("个金币").exists() |text("去使用").exists() |text("去完成").exists() |textContains("再摇一个").exists()) && Status == 0){
    sleep(random(1000,2000));
    RewardTimes=RewardTimes+1;
    if(text("个金币").exists()){
      console.log("摇到<金币>");
      GoldCoinQty=GoldCoinQty+parseInt(text("个金币").findOne().parent().child(1).text());//通过“个金币”关键字获取当前的金币奖励数
      console.log("领取"+text("个金币").findOne().parent().child(1).text()+"个金币");
    }
    else{
      console.log("摇到<优惠券>");//除了金币奖励，其他都是优惠券
    }
    console.log("第"+RewardTimes+"次<奖励>领取成功");
    NullRewardTimes=0;//获得奖励后，重新开始计算次数
    className("android.widget.Button").text("关闭").findOne().click();
    Status=1;//窗口关闭，还原状态
    sleep(random(1000,2000)+2000);
    continue;
  }
  //已到今日上限，结束循环，退出脚本
  else if(text("明天再来").exists() && Status == 0){
    sleep(random(1000,2000));
    text("明天再来").findOne().click();
    console.error("已到今日上限，即将退出脚本");
    if (text("关闭").exists()) {
      text("关闭").findOne().click();
      console.log("关闭");
      sleep(random(1000,2000));
    }
    Status=1;//窗口关闭，还原状态
    break;
  }
  //如果提示提示活动火爆，等待5秒后再进入循环
  else if((text("好的，等会再来").exists() | textContains("人太多").exists() |text("一会再来").exists()) && Status == 0){
    sleep(random(1000,2000));
    className("android.widget.Button").text("关闭").findOne().click();
    Status=1;//窗口关闭，还原状态
    console.error("活动火爆，等待5秒");
    NullRewardTimes=NullRewardTimes+5;//一次火爆，等于多次无奖励，以尽快退出脚本
    sleep(random(1000,2000)+4000);
    continue;
  }
  //没有摇到红包，关闭弹窗后，直接进入下次循环
  else if(className("android.widget.Button").text("关闭").exists() && Status == 0) {
    sleep(random(1000,2000));
    className("android.widget.Button").text("关闭").findOne().click();
    console.log("关闭");
    NullRewardTimes=NullRewardTimes+1;
    Status = 1;//窗口关闭，还原状态
    sleep(random(1000,2000)+1000);
  }
  //多次无奖励后，退出脚本
  if(NullRewardTimes > 20){
    console.error("连续20次无奖励，即将退出脚本");
    sleep(1000);
    break;
  }
  if(Status == 1){
    ShakeHongBaoTimes=ShakeHongBaoTimes+1;
    console.info("第"+ShakeHongBaoTimes+"次摇红包" );
    sleep(random(1000,1500));
    if (text("摇红包").findOne() == null) {
      //界面异常时，尝试坐标点击
      click(730,1950);
      Status = 0;//更新状态，等待后续窗口
    }
    else{
      className("android.widget.Image").text("摇红包").findOne().parent().click();
      Status = 0;//更新状态，等待后续窗口
    }
  }
  while(text("正在匹配中...").exists()){
    if(text("领").exists() |className("android.widget.Button").text("关闭").exists()){
      break;
    }
    sleep(500);
  }
}
//console.info("本次运行获得金币："+GoldCoinQty);
if(text("我的红包").findOnce() != null){
  console.info("当前红包金额："+text("我的红包").findOne().parent().child(1).text());
}
else{
  console.error("界面异常，无法识别红包金额");
}
/*
if(text("可兑换金币").findOnce() != null){
  console.info("当前可兑换金币："+text("可兑换金币").findOne().parent().child(1).text());
  if(text("可兑换金币").findOne().parent().child(1).text() > 10000){
    console.log("金币已超1万，可手动兑换为红包");
  }
}
else{
  console.error("界面异常，无法识别可兑换金币");
}*/
console.log("结束任务");
home();
sleep(1000);
console.log("已退出脚本");
engines.myEngine().forceStop()